package com.piggy.logi.sys.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.web.domain.BaseTenantEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * 发票管理编辑对象
 *
 * @author fengxy
 * @date 2023/10/18 9:56
 **/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("发票管理编辑对象")
public class LogiWaybillInvoiceEditBo extends BaseTenantEntity {

    /** 主键 */
    @ApiModelProperty("主键")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /** 运单ID */
    @ApiModelProperty("运单ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @NotNull(message = "运单ID不能为空")
    private Long waybillId;

    /** 客户ID */
    @ApiModelProperty(value = "客户ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @NotNull(message = "客户ID不能为空")
    private Long customerId;

    /** 类型：0.电子发票 1.纸质发票 */
    @ApiModelProperty("类型：0.电子发票 1.纸质发票")
    @NotNull(message = "类型不能为空")
    private Integer type;

    /** 公司名称 */
    @ApiModelProperty("公司名称")
    @NotBlank(message = "公司名称不能为空")
    private String companyName;

    /** 公司税号 */
    @ApiModelProperty("公司税号")
    @NotBlank(message = "公司税号不能为空")
    private String companyTaxNo;

    /** 公司地址 */
    @ApiModelProperty("公司地址")
    private String companyAddress;

    /** 公司电话 */
    @ApiModelProperty("公司电话")
    private String companyMobile;

    /** 公司开户行 */
    @ApiModelProperty("公司开户行")
    private String accountBank;

    /** 开户行账号 */
    @ApiModelProperty("开户行账号")
    private String accountNumber;

    /** 总金额 */
    @ApiModelProperty("总金额")
    @NotNull(message = "总金额不能为空")
    private BigDecimal totalAmount;

    /** 开票内容 */
    @ApiModelProperty("开票内容")
    @NotBlank(message = "开票内容不能为空")
    private String invoiceContent;

    /** 开票方 */
    @ApiModelProperty("开票方")
    @NotBlank(message = "开票方不能为空")
    private String invoiceParty;

    /** 发票总额 */
    @ApiModelProperty("发票总额")
    @NotNull(message = "发票总额不能为空")
    private BigDecimal invoiceTotal;

    /** 数量 */
    @ApiModelProperty("数量")
    @NotNull(message = "数量不能为空")
    private Integer quantity;

    /** 电子邮箱 */
    @ApiModelProperty("电子邮箱")
    private String email;

    /** 备注 */
    @ApiModelProperty("备注")
    private String remark;
}
